<?php
    
/**
      文件：log.class.php
      作用：记录信息到日志
**/

/**
    思路：
            给定内容，写入文件（fopen,fwrite）
            如果文件大于1>M，重新写一份
**/
defined('ACC') || exit('ACC Denied');
class log{
     const LOGFILE  = 'curr.log';   //建一个常量，代表日志文件的名称
  //写日志的
     public static function write($cont){
         // 判断是否备份
        $cont = $cont . "\r\n";    //每添加一次换就要换行
         $log = self::isBak();    //计算出日志文件的地址
         $fh =  fopen($log,'ab');
         fwrite($fh,$cont);
         fclose($fh);
     }

  // 备份日志
     public static function bak(){
         // 就是把原来的日志文件，改个名，存储起来
          // 改成 年-月-日.bak这种形式
        $log = ROOT . 'data/log/'.self::LOGFILE;
        $bak = ROOT . 'data/log/' . date('ymd') . mt_rand(10000,99999) . '.bak';
        return rename($log,$bak);
     }
  // 读取并判断日志的大小   
     public static function isBak(){
         // echo '如果文件不存在，创建11';
         $log = ROOT . 'data/log/'.self::LOGFILE;
         if(!file_exists($log)){     //如果文件不存在，则创建该文件
                touch($log);        //touch 如果参数文件不存在，则创建
//                echo '如果文件不存在，创建22';
                return $log;
         }

         //要是存在，则判断大小
           clearstatcache(true,$log);     //因为filesize会缓存，清除缓存
           $size = filesize($log);
            // echo $size,"<br />";
           if($size <= 1024*1024){
                  return $log;
           }

           //走到这一行，说明>1M
           if(!self::bak()){
                  return $log;
           }else{
                 touch($log);
                 return $log;
           }


     }
}

?>